/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.Timer;

/**
 *
 * @author Mary
 */
public class PanelTemporizador extends javax.swing.JPanel {
    
    private Timer reloj;
    private boolean cronometroActivo;
    
    /**
     * Creates new form PanelTemporizador
     */
    public PanelTemporizador() {
        initComponents();
        tiempo.setText("00:00:000" );
        tiempo.setHorizontalAlignment( JLabel.CENTER );
        tiempo.setForeground( Color.BLUE );
        tiempo.setBackground( Color.WHITE );
        tiempo.setOpaque( true );
    }
    
//    public void run(){
//        Integer minutos = 0 , segundos = 0, milesimas = 0;
//        //min es minutos, seg es segundos y mil es milesimas de segundo
//        String min="", seg="", mil="";
//        try
//        {
//            //Mientras cronometroActivo sea verdadero entonces seguira
//            //aumentando el tiempo
//            while( cronometroActivo )
//            {
//                reloj.setDelay(4);
//                //Incrementamos 4 milesimas de segundo
//                milesimas += 4;
//                 
//                //Cuando llega a 1000 osea 1 segundo aumenta 1 segundo
//                //y las milesimas de segundo de nuevo a 0
//                if( milesimas == 1000 )
//                {
//                    milesimas = 0;
//                    segundos += 1;
//                    //Si los segundos llegan a 60 entonces aumenta 1 los minutos
//                    //y los segundos vuelven a 0
//                    if( segundos == 60 )
//                    {
//                        segundos = 0;
//                        minutos++;
//                    }
//                }
// 
//                //Esto solamente es estetica para que siempre este en formato
//                //00:00:000
//                if( minutos < 10 ) min = "0" + minutos;
//                else min = minutos.toString();
//                if( segundos < 10 ) seg = "0" + segundos;
//                else seg = segundos.toString();
//                 
//                if( milesimas < 10 ) mil = "00" + milesimas;
//                else if( milesimas < 100 ) mil = "0" + milesimas;
//                else mil = milesimas.toString();
//                 
//                //Colocamos en la etiqueta la informacion
//                tiempo.setText( min + ":" + seg + ":" + mil );                
//            }
//        }catch(Exception e){}
//        //Cuando se reincie se coloca nuevamente en 00:00:000
////        tiempo.setText( "00:00:000" );
//    }
    
      /**
     * Iniciar el cronometro poniendo cronometroActivo 
       en verdadero para que entre en el while 
     */
    public void iniciarCronometro() {
        cronometroActivo = true;
        
        ActionListener taskPerformer = new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                Integer minutos = 0 , segundos = 0, milesimas = 0;
                //min es minutos, seg es segundos y mil es milesimas de segundo
                String min="", seg="", mil="";
              
                    //Mientras cronometroActivo sea verdadero entonces seguira
                    //aumentando el tiempo
                    while( cronometroActivo )
                    {
                        reloj.setDelay(4);
                        //Incrementamos 4 milesimas de segundo
                        milesimas += 4;

                        //Cuando llega a 1000 osea 1 segundo aumenta 1 segundo
                        //y las milesimas de segundo de nuevo a 0
                        if( milesimas == 1000 )
                        {
                            milesimas = 0;
                            segundos += 1;
                            //Si los segundos llegan a 60 entonces aumenta 1 los minutos
                            //y los segundos vuelven a 0
                            if( segundos == 60 )
                            {
                                segundos = 0;
                                minutos++;
                            }
                        }

                        //Esto solamente es estetica para que siempre este en formato
                        //00:00:000
                        if( minutos < 10 ) min = "0" + minutos;
                        else min = minutos.toString();
                        if( segundos < 10 ) seg = "0" + segundos;
                        else seg = segundos.toString();

                        if( milesimas < 10 ) mil = "00" + milesimas;
                        else if( milesimas < 100 ) mil = "0" + milesimas;
                        else mil = milesimas.toString();

                        //Colocamos en la etiqueta la informacion
                        tiempo.setText( min + ":" + seg + ":" + mil );                
                    
                }
            }
        };
        reloj = new Timer(4, taskPerformer);
        reloj.start();
    }
  
    /**
     * Parar el cronometro
     */
    public void pararCronometro(){       
        cronometroActivo = false;
        reloj.stop();
    }
    
    /**
     * Continua el curso del cronómetro
     */
    public void continuarCronometro(){
        reloj.restart();
        cronometroActivo = true;
    }
    
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        tiempo = new javax.swing.JLabel();

        tiempo.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(tiempo, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(tiempo, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
    }// </editor-fold>//GEN-END:initComponents

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel tiempo;
    // End of variables declaration//GEN-END:variables

}
